<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../style.css" type="text/css" media="screen">
<link rel="stylesheet" href="../../print.css" type="text/css" media="print">
<meta content="ComponentDescriptor,mx.core.ComponentDescriptor,document,events,id,propertiesFactory,type,properties,invalidateProperties,toString" name="keywords">
<title>mx.core.ComponentDescriptor</title>
</head>
<body>
<script type="text/javascript" language="javascript" src="../../asdoc.js"></script><script type="text/javascript" language="javascript" src="../../cookies.js"></script><script type="text/javascript" language="javascript">
<!--
				asdocTitle = 'ComponentDescriptor - Zentrum virtUOS: virtPresenter';
				var baseRef = '../../';
				window.onload = configPage;
			--></script>
<table style="display:none" id="titleTable" cellspacing="0" cellpadding="0" class="titleTable">
<tr>
<td align="left" class="titleTableTitle">virtPresenter AsDoc</td><td align="right" class="titleTableTopNav"><a onclick="loadClassListFrame('../../all-classes.html')" href="../../package-summary.html">All&nbsp;Packages</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../all-classes.html')" href="../../class-summary.html">All&nbsp;Classes</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../index-list.html')" href="../../all-index-A.html">Index</a>&nbsp;|&nbsp;<a href="../../index.html?mx/core/ComponentDescriptor.html&amp;mx/core/class-list.html" id="framesLink1">Frames</a><a onclick="parent.location=document.location" href="" style="display:none" id="noFramesLink1">No&nbsp;Frames</a></td><td rowspan="3" align="right" class="titleTableLogo"><img alt="Adobe Logo" title="Adobe Logo" class="logoImage" src="../../images/logo.jpg"></td>
</tr>
<tr class="titleTableRow2">
<td align="left" id="subTitle" class="titleTableSubTitle">Class&nbsp;ComponentDescriptor</td><td align="right" id="subNav" class="titleTableSubNav"><a href="#propertySummary">Properties</a>&nbsp;| <a href="#methodSummary">Methods</a></td>
</tr>
<tr class="titleTableRow3">
<td colspan="2">&nbsp;</td>
</tr>
</table>
<script type="text/javascript" language="javascript">
<!--
if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("Class ComponentDescriptor"); titleBar_setSubNav(false,true,false,false,false,false,true,false,false,false,false,false,false,false);}
--></script>
<div class="MainContent">
<table cellspacing="0" cellpadding="0" class="classHeaderTable">
<tr>
<td class="classHeaderTableLabel">Package</td><td><a onclick="javascript:loadClassListFrame('class-list.html')" href="package-detail.html">mx.core</a></td>
</tr>
<tr>
<td class="classHeaderTableLabel">Class</td><td class="classSignature">public class ComponentDescriptor</td>
</tr>
<tr>
<td class="classHeaderTableLabel">Subclasses</td><td><a href="../core/UIComponentDescriptor.html">UIComponentDescriptor</a></td>
</tr>
</table>
<p></p>
  ComponentDescriptor is the base class for the UIComponentDescriptor class,
  which encapsulates the information that you specified in an MXML tag
  for an instance of a visual component.
  In Flex, non-visual components are treated differently and do not
  have descriptors, but in a future version the ComponentDescriptor
  base class may be used for them as well.
   <p>Most of the tags in an MXML file describe a tree of UIComponent objects.
  For example, the <code>&lt;mx:Application&gt;</code> tag represents a
  UIComponent object, and its child containers and controls are all
  UIComponent objects.</p>
   <p>The MXML compiler compiles each of these MXML tags into a
  UIComponentDescriptor instance.
  To be precise, the MXML compiler autogenerates an ActionScript
  data structure which is a tree of UIComponentDescriptor objects.</p>
   <p>At runtime, the <code>createComponentsFromDescriptors()</code> method
  of the Container class uses the information in the UIComponentDescriptor
  objects in the container's <code>childDescriptors</code> array to create
  the actual UIComponent objects that are the container's children,
  plus deeper descendants as well.
  Depending on the value of the container's <code>creationPolicy</code>,
  property, the descendants might be created at application startup,
  when some part of the component is about to become visible,
  or when the application developer manually calls
  the <code>createComponentsFromDescriptors()</code> method.</p>
   <p>You do not typically create ComponentDescriptor or UIComponentDescriptor
  instances yourself; you can access the ones that the MXML compiler
  autogenerates, via the <code>childDescriptors</code> array
  of the Container class.</p>
   <p></p>
<p>
<span class="classHeaderTableLabel">See also</span>
</p>
<div class="seeAlso">
<a href="../core/UIComponentDescriptor.html" target="">mx.core.UIComponentDescriptor</a>
<br>
<a href="../core/Container.html#childDescriptors" target="">mx.core.Container.childDescriptors</a>
<br>
<a href="../core/Container.html#creationPolicy" target="">mx.core.Container.creationPolicy</a>
<br>
<a href="../core/Container.html#createComponentsFromDescriptors()" target="">mx.core.Container.createComponentsFromDescriptors()</a>
</div>
<br>
<hr>
</div>
<a name="propertySummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Properties</div>
<table id="summaryTableProperty" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#document">document</a> : Object<div class="summaryTableDescription">
      A reference to the document Object in which the component
      is to be created.</div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#events">events</a> : Object<div class="summaryTableDescription">
      An Object containing name/value pairs for the component's
      event handlers, as specified in MXML.</div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#id">id</a> : String<div class="summaryTableDescription">
      The identifier for the component, as specified in MXML.</div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#properties">properties</a> : Object<div class="summaryTableDescription">[read-only]
      An Object containing name/value pairs for the component's properties,
      as specified in MXML.</div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#propertiesFactory">propertiesFactory</a> : Function<div class="summaryTableDescription">
      A Function that returns an Object containing name/value pairs
      for the component's properties, as specified in MXML.</div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#type">type</a> : Class<div class="summaryTableDescription">
      The Class of the component, as specified in MXML.</div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
</table>
</div>
<a name="methodSummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Methods</div>
<table id="summaryTableMethod" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#ComponentDescriptor()">ComponentDescriptor</a>(descriptorProperties:Object)</div>
<div class="summaryTableDescription">
      Constructor
           </div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#invalidateProperties()">invalidateProperties</a>():void</div>
<div class="summaryTableDescription">
      Invalidates the cached <code>properties</code> property.</div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#toString()">toString</a>():String</div>
<div class="summaryTableDescription">
      Returns the string "ComponentDescriptor_" plus the value of the  
      <code>id</code> property.</div>
</td><td class="summaryTableOwnerCol">ComponentDescriptor</td>
</tr>
</table>
</div>
<script type="text/javascript" language="javascript">
<!--
showHideInherited();
--></script>
<div class="MainContent">
<a name="propertyDetail"></a>
<div class="detailSectionHeader">Property detail</div>
<a name="document"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">document</td><td class="detailHeaderType">property</td>
</tr>
</table>
<div class="detailBody">
<code>public var document:Object</code><p>
      A reference to the document Object in which the component
      is to be created.
           </p><p>
<span class="label">See also</span>
</p>
<div class="seeAlso">
<a href="../core/IUIComponent.html#document" target="">mx.core.IUIComponent.document</a>
</div>
</div>
<a name="events"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">events</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public var events:Object</code><p>
      An Object containing name/value pairs for the component's
      event handlers, as specified in MXML.
           </p><p>For example, if you write</p>
           <pre>
      &lt;mx:DataGrid id="dg" initialize="fetchData(); initDataGrid();"  change="changeHandler(event);"/&gt;
      </pre>
           <p>then the descriptor's <code>events</code> property is the Object</p>
           <pre>
      { initialize: "__dg_initialize", change: "__dg_change" }
      </pre>
           <p>The <code>event</code>property is <code>null</code>
      if no MXML event handlers were specified for the component</p>
           <p>The strings <code>"__dg_initialize"</code>
      and <code>"__dg_change"</code> are the names of event handler
      methods that the MXML compiler autogenerates.
      The body of these methods contain the ActionScript statements
      that you specified as the values of the event attributes.
      For example, the autogenerated <code>initialize</code> handler is</p>
           <pre>
      public function __dg_initialize(event:mx.events.FlexEvent):void
      {
          fetchData();
          initDataGrid();
      }
      </pre>
           <p>You should not assume that the autogenerated event handlers
      will always be specified by name; this may change in a future
      version of Flex.</p>
      
      <p>This property is used by the Container method
      <code>createComponentsFromDescriptors()</code>
      to register the autogenerated event handlers
      using the <code>addEventListener()</code> method.</p>
     </div>
<a name="id"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">id</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public var id:String</code><p>
      The identifier for the component, as specified in MXML. 
           </p><p>For example, if you write</p>
           <pre>
      &lt;mx:TextInput id="firstName" text="Enter your first name here"/&gt;
      </pre>
           <p>then the descriptor's <code>id</code> property is the String
      <code>"firstName"</code>.</p>
           <p>The <code>id</code> property is <code>null</code>
      if no MXML id was specified for the component.</p>
           <p>The value of the <code>id</code> property becomes the name
      of a public variable in the MXML document object,
      autogenerated by the MXML compiler.
      The value of this variable is a reference to the UIComponent object
      created from this descriptor.
      This is why you can, for example, reference the TextInput control's 
      <code>text</code> property as <code>firstName.text</code>
      from anywhere within the document containing this TextInput instance.</p>
           <p>If an <code>id</code> is specified, and it isn't the empty string,
      it also becomes the <code>name</code> of the DisplayObject object.
      If an <code>id</code> is not specified or is empty, the DisplayObject
      object's <code>name</code> remains an autogenerated string,
      such as <code>"Button3"</code>, as returned by the
      <code>NameUtil.createUniqueName()</code> method.
      The <code>name</code> is used in generating the string returned
      by the <code>toString()</code> method.
      It can also be used to find the component from its parent
      by calling <code>getChildByName()</code>.</p>
           <p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.display.DisplayObject.name</div>
</div>
<a name="properties"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">properties</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>properties:Object</code>&nbsp;&nbsp;[read-only]<p>
      An Object containing name/value pairs for the component's properties,
      as specified in MXML.
           </p><p>For example, if you write</p>
           <pre>
      &lt;mx:TextInput width="150" text="Hello"/&gt;
      </pre>
           <p>then the descriptor's <code>properties</code> property
      is the Object</p>
           <pre>
      { width: 150, text: "Hello" }
      </pre>
           <p>The <code>properties</code> property is <code>null</code>
      if no MXML properties were specified for the component.
      In this case, the component will use default property values.</p>
           <p> This Object is produced by calling the function specified by the
      <code>propertiesFactory</code> property, and then cached
      for subsequent access.
      However, when a Repeater produces multiple instances of a component
      from the same descriptor, a fresh copy of the <code>properties</code>
      Object should be produced for each component instance so that they
      don't share property values which are Arrays or Object references.
      The Repeater accomplishes this by calling the 
      <code>invalidateProperties()</code> method on the descriptor.</p>
           <span class="label">Implementation</span>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;public function get properties():Object</code>
<br>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">
<a href="../core/ComponentDescriptor.html#propertiesFactory" target="">propertiesFactory</a>
<br>
<a href="../core/ComponentDescriptor.html#invalidateProperties()" target="">invalidateProperties()</a>
</div>
</div>
<a name="propertiesFactory"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">propertiesFactory</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public var propertiesFactory:Function</code><p>
      A Function that returns an Object containing name/value pairs
      for the component's properties, as specified in MXML.
           </p><p>For example, if you write</p>
      
      <pre>
      &lt;mx:TextInput width="150" text="Hello"&gt;
      </pre>
           <p>then the descriptor's <code>propertiesFactory</code> property 
      is the Function:</p>
           <pre>
      function():Object { return { width: 150, text: "Hello" }; }
      </pre>
           <p>The <code>propertiesFactory</code>property is <code>null</code>
      if no MXML properties were specified for the component.
      In this case, the component will use default property values.</p>
           <p>The reason that <code>propertyFactory</code> is a
      Function returning an Object rather than an actual Object
      is to allow the tree of ComponentDescriptor objects
      to "unfold" incrementally.
      If all the descriptors in the descriptor tree for the document
      were created at launch time, the time to launch would be greater.</p>
           <p>The <code>properties</code> property returns a cached Object
      that was produced by this factory function.</p>
      
      <p>Note: Event handlers such as <code>click="doSomething();"</code>
      appear in the <code>events</code> Object,
      not in the <code>properties</code> Object.</p>
           <p>
<span class="label">See also</span>
</p>
<div class="seeAlso">
<a href="../core/ComponentDescriptor.html#properties" target="">properties</a>
</div>
</div>
<a name="type"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">type</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public var type:Class</code><p>
      The Class of the component, as specified in MXML.
           </p><p>For example, if you write</p>
           <pre>
      &lt;mx:TextInput/&gt;
      </pre>
           <p>then the descriptor's <code>type</code> property
      the Class mx.controls.TextInput.</p>
           <p>The property is never <code>null</code> for the
      ComponentDescriptor objects created by the MXML compiler,
      because every MXML tag has a tag name such as mx:TextInput.</p>
           <p>The mapping between an MXML tag and its corresponding class
      is determined by the XML namespace and the "manifest" file,
      if any, that is associated with that namespace.
      For example, the standard Flex namespace
      <code>http://www.adobe.com/2006/mxml</code>
      represented by the mx: prefix is associated (in the flex-config.xml
      file) with the manifest file mxml-manifest.xml,
      and this file has the tag</p>
           <pre>
      &lt;component id="TextInput" class="mx.controls.TextInput"/&gt;
      </pre>
           <p>which maps the tag name mx:TextInput
      to the Class mx.controls.TextInput.
      Note that the use of a manifest file allows components in single
      XML namespace to map to classes in multiple ActionScript packages.</p>
     </div>
<a name="constructorDetail"></a>
<div class="detailSectionHeader">Constructor detail</div>
<a name="ComponentDescriptor()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">ComponentDescriptor</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">constructor</td>
</tr>
</table>
<div class="detailBody">
<code>public function ComponentDescriptor(descriptorProperties:Object)</code><p>
      Constructor
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">descriptorProperties</span>:Object</code> &mdash; An Object containing name/value pairs
      for the properties of the ComponentDescriptor object, such as its
      <code>type</code>, <code>id</code>, <code>propertiesFactory</code>
      and <code>events</code>
     </td>
</tr>
</table>
</div>
<a name="methodDetail"></a>
<div class="detailSectionHeader">Method detail</div>
<a name="invalidateProperties()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">invalidateProperties</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td>
</tr>
</table>
<div class="detailBody">
<code>public function invalidateProperties():void</code><p>
      Invalidates the cached <code>properties</code> property.
      The next time you read the <code>properties</code> property,
      the properties are regenerated from the function specified by the 
      value of the <code>propertiesFactory</code> property.
     </p></div>
<a name="toString()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">toString</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function toString():String</code><p>
      Returns the string "ComponentDescriptor_" plus the value of the  
      <code>id</code> property.
           </p><p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>String</code> &mdash; The string "ComponentDescriptor_" plus the value of the  
      <code>id</code> property.
     </td>
</tr>
</table>
</div>
<br>
<br>
<hr>
<br>
<p></p>
<center class="copyright"> 
</center>
</div>
</body>
</html>
<!-- -->
